import zhipuai
from loguru import logger
from config import GLM_CONFIG

class GLMBot:
    def __init__(self):
        self.client = zhipuai.ZhipuAI(api_key=GLM_CONFIG["api_key"])
        self.history = []
        
    def chat(self, message):
        """调用智谱 GLM API 进行对话"""
        try:
            # 添加用户消息到历史记录
            self.history.append({
                "role": "user",
                "content": message
            })
            
            # 调用 API
            logger.info("正在调用 GLM API...")
            response = self.client.chat.completions.create(
                model=GLM_CONFIG["model"],
                messages=self.history,
                temperature=GLM_CONFIG["temperature"],
                top_p=GLM_CONFIG["top_p"],
                max_tokens=GLM_CONFIG["max_tokens"],
                stream=False,  # 使用同步调用
                do_sample=True
            )
            
            # 获取回答
            reply = response.choices[0].message.content
            
            # 记录 token 使用情况
            usage = response.usage
            logger.debug(f"Token 使用情况: 提示={usage.prompt_tokens}, 回复={usage.completion_tokens}, 总计={usage.total_tokens}")
            
            # 添加助手回答到历史记录
            self.history.append({
                "role": "assistant",
                "content": reply
            })
            
            # 控制历史记录长度
            if len(self.history) > 10:
                self.history = self.history[-10:]
                
            return reply
            
        except Exception as e:
            error_msg = f"调用 GLM API 出错: {str(e)}"
            logger.error(error_msg)
            logger.exception(e)
            return f"抱歉，服务出现错误: {str(e)}" 